const db = require('../config/db');
const CryptoJS = require( 'crypto-js');
// 获取所有用户
exports.getUsers = async (req, res) => {
    // const { setToken } = req.body;
    // console.log(req.body)
    // console.log(isLogin(token,time))
    // if(!isLogin(token,time)){
    //     res.status(401).json({ error: '数据库查询失败,登录过期' });
    // }
    try {
        const [rows] = await db.query('SELECT * FROM users;'); // 替换为你的表名
        res.json(rows);
    } catch (error) {
        res.status(500).json({ error: '数据库查询失败' });
    }
};

//公共判断是否登录成功 
async function isLogin(token){
    //再進行查詢token
    const [rows] = await db.query("SELECT * FROM success_tokens where token = ?", [token]);
    if(rows[0].username!=null){
        //先進行時間判斷 
        let isToLater = (Math.abs(new Date().getTime()-rows[0].time)/(1000*60*60))>16;
        if(isToLater){
            return false;
        }
        return true;
    }
    return false;
}

//条件登录查询
exports.getUsersByNameEmail = async (req, res) => {
    const { username, email } = req.body;
    try {
        const [rows] = await db.query("SELECT * FROM users where username = ? and email = ?;", [username, email]); // 替换为你的表名
        //登录成功需要创建一个token 和username 进行加密 放入数据库 一列是token 一列是 username 
        // 在进入后  查询或者其他业务 先进行比对 再进行业务 不然就提示 登录失效 删除缓存页面刷新   
        //  页面刷新 需要判断缓存是否已经登录成功 

        console.log(rows[0].username!=null)
        //登录成功 进行添加token 到数据库
        if(rows[0].username!=null){
            const setToken =CryptoJS.MD5(username+ +10*Math.random()).toString();
            await db.query('INSERT INTO success_tokens (token,username, email,time) VALUES (?,?,?,?);', [setToken,username,email,new Date().getTime()]);
            res.json({ setToken: setToken, username, email,status:200 });
        }else{
            res.status(500).json({ error: '数据库查询失败2' });
            console.log("rows")
        }
       

    } catch (error) {
        res.json({ message:'账号或密码错误',status:401 });
        
    }
};


// 创建用户
exports.createUser = async (req, res) => {
    const { username, email } = req.body; // 假设接收 name 和 email
    try {
        const result = await db.query('INSERT INTO users (username, email) VALUES (?, ?);', [username, email]);
        res.json({ id: result[0].insertId, username, email });
    } catch (error) {
        res.status(500).json({ error: '数据库插入失败' });
    }
};



// 批量删除用户
exports.deleteUsers = async (req, res) => {
    const { ids } = req.body; // 从请求体中获取选中的用户 ID 列表
    if (!ids || !Array.isArray(ids) || ids.length === 0) {
        return res.status(400).json({ error: 'No user IDs provided' });
    }

    try {
        const placeholders = ids.map(() => '?').join(','); // 动态生成占位符
        const query = `DELETE FROM users WHERE id IN (${placeholders});`;
        const [result] = await db.query(query, ids); // 执行删除操作
        res.json({ message: `${result.affectedRows} users deleted successfully` });
    } catch (error) {
        console.error('Error deleting users:', error);
        res.status(500).json({ error: 'Failed to delete users', details: error.message });
    }
};

